home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sh / include / asm / mmu.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.8 KB  |  77 lines

  1. #ifndef __MMU_H
  2. #define __MMU_H
  3.  
  4. /* Default "unsigned long" context */
  5. typedef unsigned long mm_context_id_t[NR_CPUS];
  6.  
  7. typedef struct {
  8. #ifdef CONFIG_MMU
  9.     mm_context_id_t        id;
  10.     void            *vdso;
  11. #else
  12.     struct vm_list_struct    *vmlist;
  13.     unsigned long        end_brk;
  14. #endif
  15. #ifdef CONFIG_BINFMT_ELF_FDPIC
  16.     unsigned long        exec_fdpic_loadmap;
  17.     unsigned long        interp_fdpic_loadmap;
  18. #endif
  19. } mm_context_t;
  20.  
  21. /*
  22.  * Privileged Space Mapping Buffer (PMB) definitions
  23.  */
  24. #define PMB_PASCR        0xff000070
  25. #define PMB_IRMCR        0xff000078
  26.  
  27. #define PMB_ADDR        0xf6100000
  28. #define PMB_DATA        0xf7100000
  29. #define PMB_ENTRY_MAX        16
  30. #define PMB_E_MASK        0x0000000f
  31. #define PMB_E_SHIFT        8
  32.  
  33. #define PMB_SZ_16M        0x00000000
  34. #define PMB_SZ_64M        0x00000010
  35. #define PMB_SZ_128M        0x00000080
  36. #define PMB_SZ_512M        0x00000090
  37. #define PMB_SZ_MASK        PMB_SZ_512M
  38. #define PMB_C            0x00000008
  39. #define PMB_WT            0x00000001
  40. #define PMB_UB            0x00000200
  41. #define PMB_V            0x00000100
  42.  
  43. #define PMB_NO_ENTRY        (-1)
  44.  
  45. struct pmb_entry;
  46.  
  47. struct pmb_entry {
  48.     unsigned long vpn;
  49.     unsigned long ppn;
  50.     unsigned long flags;
  51.  
  52.     /*
  53.      * 0 .. NR_PMB_ENTRIES for specific entry selection, or
  54.      * PMB_NO_ENTRY to search for a free one
  55.      */
  56.     int entry;
  57.  
  58.     struct pmb_entry *next;
  59.     /* Adjacent entry link for contiguous multi-entry mappings */
  60.     struct pmb_entry *link;
  61. };
  62.  
  63. /* arch/sh/mm/pmb.c */
  64. int __set_pmb_entry(unsigned long vpn, unsigned long ppn,
  65.             unsigned long flags, int *entry);
  66. int set_pmb_entry(struct pmb_entry *pmbe);
  67. void clear_pmb_entry(struct pmb_entry *pmbe);
  68. struct pmb_entry *pmb_alloc(unsigned long vpn, unsigned long ppn,
  69.                 unsigned long flags);
  70. void pmb_free(struct pmb_entry *pmbe);
  71. long pmb_remap(unsigned long virt, unsigned long phys,
  72.            unsigned long size, unsigned long flags);
  73. void pmb_unmap(unsigned long addr);
  74.  
  75. #endif /* __MMU_H */
  76.  
  77.